import Vue from "vue";
import App from "./App.vue";
import router from "./router";
import Vant from "vant";
import axios from "axios";
import "vant/lib/index.css";
Vue.prototype.$axios = axios;
// axios.defaults.baseURL = "http://liangwei.tech:3000";
// axios.defaults.baseURL = "http://127.0.0.1:3000";
axios.defaults.baseURL = "http://157.122.54.189:9083";

Vue.use(Vant);
// 添加路由守卫
router.beforeEach((to, from, next) => {
  const token = localStorage.getItem("token");
  if (to.meta.code) {
    if (token) {
      next();
    } else {
      router.replace({ name: "login" });
    }
  } else {
    next();
  }
});
// 添加响应拦截
axios.interceptors.response.use((res) => {
  console.log("发送了请求", res);

  // 对获取的数据进行处理
  const { statusCode, message } = res.data;
  console.log(statusCode);
  console.log(message);

  if (message == "用户信息验证失败") {
    // 处理错误，在入口文件如果想要使用 vant ui 弹出窗口、
    // 这里没有 this 也没有 $toast
    // 可以使用单独引入的方式，只使用 Toast
    // Toast.fail("用户信息校验失败，重新登录");
    localStorage.removeItem("token");
    localStorage.removeItem("userId");
    router.replace("/login");
  }

  // res 是每次请求得到的结果，相当于.then 的 res 还没到达之前在这里被拦住了
  // 拦截器把结果拦住，卡死整个执行过程，执行完我们要的函数以后， 必须 return 出去放行
  // 相当于路由守卫 next
  return res;
});
// 统一带上token;
axios.interceptors.request.use((config) => {
  if (!config.headers.Authorization && localStorage.getItem("token")) {
    config.headers.Authorization = localStorage.getItem("token");
  }
  return config;
});
Vue.filter("filtersUrl", function(url) {
  const filte = /^http/;
  if (filte.test(url)) {
    return url;
  } else {
    return axios.defaults.baseURL + url;
  }
});
Vue.config.productionTip = false;

new Vue({
  router,
  render: (h) => h(App),
}).$mount("#app");
